// pages/detail-songs/index.js
import { rankingStore, playerStore } from "../../../store/index"; // 导入 rankingStore 状态管理数据

// 导入接口
import { getSongMenuDetail } from "../../../service/api_music";

Page({
  data: {
    type: "", // url 中的 type 数据
    ranking: "", // 参数名
    songData: {}, // 歌曲排行或者是歌单详情的数据
  },

  onLoad(options) {
    // 获取 url 地址中的 type 参数（用来区分是歌单详情页还是歌曲详情页）
    const type = options.type;
    this.setData({ type });
    
    if(type === 'menu') {
      // 如果是歌单详情信息
      const id = options.id; // 获取歌单的 id
      
      // 调用获取歌单详情的方法
      this.getSongMenuDetail(id);
    } else if(type === 'rank') {
      // 如果是歌曲排行详情信息
      // 1、获取 url 地址中的 ranking 参数
      const ranking = options.ranking; // 获取到 url 中的 ranking 参数
      this.setData({ ranking });

      // 2、获取页面数据
      rankingStore.onState(ranking, this.getRankingDataHandler);
    }
  },

  onUnload() {
    // 当 ranking 中有值的时候，才去取消监听
    if(this.data.ranking) {
      // 页面销毁取消监听
      rankingStore.offState(this.data.ranking, this.getRankingDataHandler);
    }
  },

  // 发送请求，获取当前页面数据
  getRankingDataHandler(res) {
    this.setData({ songData: res });
  },

  // 获取歌单详情方法
  getSongMenuDetail(id) {
    // 发送请求
    getSongMenuDetail(id).then(res => {
      this.setData({ songData: res.playlist });
    });
  },

  // 点击歌曲 item 触发的事件
	handleSongItemClick(event) {
		const index = event.currentTarget.dataset.index; // 获取当前歌曲的索引
		// 设置歌曲列表
		playerStore.setState("playSongsList", this.data.songData.tracks);
		// 设置当前播放的歌曲的索引
    playerStore.setState("playSongsIndex", index);
	}
});
